
#ifndef _ROSketch2D_H_
#define _ROSketch2D_H_

#include <vtkPolyData.h>
#include <vtkRenderer.h>
#include <vtkCamera.h>
#include <vtkProperty.h>
#include <vtkPolyDataMapper.h>
#include <vtkVertexGlyphFilter.h>
#include <vtkCoordinate.h>
#include <vtkMath.h>
#include <vtkPolyLine.h>
#include "../OLApp/defines.hpp"
#include "ThreeDApi.hpp"

namespace NS3d {

	class _3DAPI ROSketch2D {
	public:
		ROSketch2D() = default;
		~ROSketch2D() = default;
	public:
		static Sp(vtkActor) sketchCircle(double* p1, int* screen_p2, Sp(vtkRenderer) renderer, bool add = false);
		static Sp(vtkActor) sketchCircle(double* p1, double* p2);
		//Vertext
		static Sp(vtkActor) sketchVertex(double* world_p);
		static Sp(vtkActor) sketchVertex(int* screen_p, Sp(vtkRenderer) renderer, bool add = false);

	protected:
		static Sp(vtkActor) sketchActor(Sp(vtkPoints) points, Sp(vtkPolyLine) poly_line);
		static Sp(vtkActor) sketchActor(double* world_p);

	private:
		ROSketch2D(const ROSketch2D&) = delete;
		void operator=(const ROSketch2D&) = delete;

	};

}

#endif // !_ROSketch2D_H_


